package org.groupg.practice;

import com.univocity.parsers.csv.CsvParser;
import com.univocity.parsers.csv.CsvParserSettings;
import java.io.File;

public class HighPerformanceReader {
    public static void main(String[] args) {
        File csvFile = new File("data/large_data.csv");

        CsvParserSettings settings = new CsvParserSettings();

        // 性能优化配置
        settings.setReadInputOnSeparateThread(true); // 使用单独读取线程
        settings.setInputBufferSize(262144);       // 256KB缓冲区
        settings.setMaxColumns(1000);              // 最大列数
        settings.setMaxCharsPerColumn(100000);     // 每列最大字符数
        settings.setNullValue("");                // 空值处理
        settings.setEmptyValue("");               // 空字符串处理
        settings.setAutoClosingEnabled(true);     // 自动关闭流

        // 格式配置
        settings.getFormat().setDelimiter(',');
        settings.getFormat().setLineSeparator("\n");

        // 解析并统计行数
        long rowCount = 0;
        long startTime = System.currentTimeMillis();

        CsvParser parser = new CsvParser(settings);
        parser.beginParsing(csvFile);

        String[] row;
        while ((row = parser.parseNext()) != null) {
            rowCount++;
        }

        parser.stopParsing();

        long endTime = System.currentTimeMillis();
        System.out.printf("解析完成! 共 %,d 行, 耗时 %,d 毫秒%n",
                         rowCount, (endTime - startTime));
    }
}